<?php

class UsuarioController extends Zend_Controller_Action {

    /**
     * @var Application_Model_DAO_Usuario
     *
     */
    private $user = null;

    /**
     * @var Application_Model_Usuario; 
     *
     */
    private $modelUsuario = null;

    public function init() {
        require_once 'models/DAL/UsuarioDAO.php';
        require_once 'models/DAL/ContatoDAO.php';
        require_once 'models/DAL/PedidosDAO.php';
        require_once 'models/DAL/EnderecoDAO.php';
        require_once 'models/DAL/DadosPessoaisDAO.php';
        require_once 'models/DAL/ContatoDAO.php';
        require_once 'models/DAL/DocumentosDAO.php';
        require_once 'models/DAL/MateriaisApoioDAO.php';
        require_once 'models/DAL/MiscDAO.php';

        $this->user = new Application_Model_DAO_Usuario();
        $this->modelUsuario = new Application_Model_Usuario();
    }

    public function indexAction() {
        
    }

    private function disableLayout() {
        $this->view->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
    }

    public function getUser() {
        $this->disableLayout();

        $usuario = $this->user;

        $contato = new Application_Model_DAO_Contato();
        $documentos = new Application_Model_DAO_Documentos();
        $dadosPessoais = new Application_Model_DAO_DadosPessoais();
        $endereco = new Application_Model_DAO_Endereco();
        $misc = new Application_Model_DAO_Misc();


        if (($this->getParam('tipoUsuario') == 'dealer') || $this->getParam('tipoUsuario') == 'provider') {
            $dadosPessoais->setNome($this->getParam('tb_nome_fantasia', NULL));
        } else {
            $dadosPessoais->setNome($this->getParam('tb_nome', NULL));
        }

        $dadosPessoais->setRazaSocial($this->getParam('tb_razaoSocial', NULL));
        $usuario->setDadosPessoais($dadosPessoais);


        $documentos->setCnpj($this->getParam('tb_cnpj', NULL));
        $documentos->setInscriEstadual($this->getParam('tb_inscriEstadual', NULL));
        $documentos->setCpf($this->getParam('tb_cpf', NULL));
        $documentos->setRg($this->getParam('tb_rg', NULL));


        $contato->setEmail($this->getParam('tb_email', NULL));

        $usuario->setNomeUsuario($this->getParam('tb_email', NULL));
        $usuario->setSenha($this->getParam('tb_pswd', NULL));
        $usuario->setTipoUsuario($this->getParam('tipoUsuario', NULL));

        $endereco->setNomeRua($this->getParam('tb_endereco', NULL));
        $endereco->setBairro($this->getParam('tb_bairro', NULL));
        $endereco->setCep($this->getParam('tb_cep', NULL));
        $endereco->setCidade($this->getParam('tb_cidade', NULL));
        $endereco->setUf($this->getParam('tb_uf', NULL));

        $contato->setTelefone($this->getParam('tb_telefone', NULL));
        $contato->setDescProdServ($this->getParam('tbx_mensagem', NULL));
        $contato->setCelular($this->getParam('tb_celular_faturamento', NULL));
        $contato->setCarroProprio(($this->getParam('rb_possuicar', NULL)) ? 1 : 0);
        $contato->setCarteiraClientes(($this->getParam('rb_possuicart', NULL)) ? 1 : 0);
        $misc->setSite($this->getParam('tb_site', NULL));

        $contato->setMisc($misc);
        $usuario->setEndereco($endereco);
        $usuario->setContato($contato);
        $usuario->setDocumentos($documentos);
        $usuario->setEstatusLogin(TRUE);

        return $usuario;
    }

    public function setResult($rs) {
        $usuario = $this->getUser();
        switch ($rs) {
            case Application_Model_Usuario::ERRO_USUARIO_CADASTRADO:
                $this->_helper->flashMessenger->addMessage(array('success' => 'Usuário <strong>' . $usuario->getNomeUsuario() . '</strong> já cadastrado'));
                break;

            case Application_Model_Usuario::USUARIO_N_CADASTRADO:
                $this->_helper->flashMessenger->addMessage(array('success' => 'Erro ao tentar cadastrar Usuário <strong>' . $usuario->getNomeUsuario() . '</strong>, aguarde alguns minutos e tente novamente, <br /> caso o problema persista pedimos que entre em contato com o administrador do sistema'));
                break;

            case Application_Model_Usuario::USUARIO_CADASTRO_SUCCESSO:
                $this->_helper->flashMessenger->addMessage(array('success' => 'Usuário <strong>' . $usuario->getNomeUsuario() . '</strong> cadastrado com sucesso'));
                break;
        }
    }

    public function cadastrarRevendedoresAction() {
        $this->disableLayout();

        $usuario = $this->getUser();

        $model = $this->modelUsuario;

        $rs = $model->add($usuario);

        $this->setResult($rs);
        $this->redirect(BASE_URL . 'usuario/cadastro-revendedores');
    }

    public function cadastrarFornecedoresAction() {


        $model = $this->modelUsuario;

        $usuario = $this->getUser();

        $rs = $model->add($usuario);

        $this->setResult($rs);
        $this->redirect(BASE_URL . 'usuario/cadastro-fornecedores');
    }

    public function cadastrarRepresentantesAction() {
        $this->disableLayout();
        $usuario = $this->getUser();
        $model = $this->modelUsuario;

        $rs = $model->add($usuario);

        $this->setResult($rs);
        $this->redirect(BASE_URL . 'usuario/cadastro-representantes');
    }

    public function cadastroRepresentantesAction() {
        
    }

    public function cadastroFornecedoresAction() {
        
    }

    public function cadastroRevendedoresAction() {
        
    }

    public function getAddressAction() {
        $this->disableLayout();
        require_once 'Cep/CepController.php';
        $params = $this->getAllParams();

        $cep = $this->getParam('cep', NULL);

        $cep = new CepController(str_replace(array('.', '-'), '', $cep), 'json', '5ccc2e9c0a78db0ae9c84a2a0e0c304d');
        echo $cep->getDados();
    }

}

